package com.lg.algorithm.collections.map;

import com.lg.domain.User;

import java.util.HashMap;
import java.util.Random;

public class HashMapDemo {

    public static void main(String[] args) throws InterruptedException {
        //        变红黑树
        hongheiTreeOnJdk8();



        //参数的意义
        parameterMean();

    }


    /**
     * TREEIFY_THRESHOLD=8     存储节点纵向阈值 8，当纵向到达大于8的时候，他认为容量不够（相当于16*0.75时候）开始扩容
     * 并重新分配纵向，让其不在是8
     * MIN_TREEIFY_CAPACITY=64 变红黑树阈值，横向大于64并且纵向大于8同时满足。 再向此纵向的链表上去插入的时候，会变成红黑树
     * <p>
     * 最极限的状态：重写hash equal
     * 纵  横
     * 8   16
     * 9   32
     * 10  64
     * 11  变红黑树
     */
    public static void hongheiTreeOnJdk8() {
        HashMap<User, String> hongHei = new HashMap<>();
        for (int i = 0; i < 15; i++) {
            User user = new User();
            hongHei.put(user, "11");
        }

        // ConcurrentHashMap<User, String> cMap = new ConcurrentHashMap<>();

    }


    /**
     * 初始化容量16：存储的所有节点上的东西  的总容量为16
     * 负责因子0.75：让容量为 16*0.75 时下一次就进行扩容  乘2
     * <p>
     * 当key值相同，value值不同的时候 size不变，原来的值会被覆盖
     */
    private static void parameterMean() {
        Random random = new Random();
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < 222; i++) {
            int ranNum = random.nextInt(100);
            map.put(ranNum, ranNum + i);
        }
    }


}
